本文是学习GB-T 30962-2014 识别卡 集成电路卡 大容量卡. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们
本标准规定了大容量卡的概念、逻辑结构、传输接口,大容量卡数据库的相关命令、操作、事务管理、
用户访问控制操作,以及大容量卡的识别等。
本标准适用于大容量卡的研究、设计、生产和应用。
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 14916—2006 识别卡 物理特性
GB/T 16649.1—2006 识别卡 带触点的集成电路卡 第1部分:物理特性
GB/T 16649.2—2006 识别卡 带触点的集成电路卡 第2部分:触点的尺寸和位置
GB/T 16649.4—2010 识别卡 集成电路卡
第4部分:用于交换的结构、安全和命令
ISO/IEC 7816-3:2006 识别卡 集成电路卡 第3部分:带触点的卡
电信号和传输协议(Iden- tification cards—Integrated circuit cards—Part
3:Cards with contacts—Electrical interface and trans-
mission protocols)
通用串行总线规范2.0版(Universal Serial Bus Specification 2.0)
注:可以从以下网站获得:http://www.usb.org/developers/docs。
芯片间 USB 规范1.0版(Inter-Chip USB Supplement to the USB 2.0
Specification V1.0)
注:可以从以下网站获得:http://www.usb.org/developers/devclass docs
。
下列术语和定义适用于本文件。
3.1
集成电路卡 integrated circuit(s)card
IC 卡
内部封装一个或多个集成电路的识别卡(如GB/T14916 中所定义)。
[GB/T 16649.1—2006,定义3.2]
3.2
大容量卡 high capacity cards
带有大容量存储器的 IC 卡。
注:通常采用数据库的方式管理卡内数据,数据库访问采用授权和认证的方式,并采用安全加密算法进行数据的传
输和存储。
3.3
传输接口 transmission interface
用于大容量卡与接口设备(见3.7)之间传输数据的通讯接口。
GB/T 30962—2014
3.4
通用串行总线 universal serial bus
由 USB 组织制定的数据传输协议。
3.5
芯片间通用串行总线 inter-chip USB
由 USB 组织制定的用于芯片间数据传输的协议。
3.6
触点 contact
保持集成电路和外部接口设备间电流连续性的导电元件。
[GB/T 16649.1—2006,定义3.3]
3.7
接 口 设 备 interface device
在操作中与卡电连接的终端、通信设备或机器。
3.8
卡操作系统 card operating system
在 IC
卡中存储和运行的、以保护存储在非易失性存储器中的应用数据或程序的机密性和完整性、
控制 IC 卡与外界信息交换为目的的嵌入式软件。
3.9
数据库平台 database platform
用于统一管理大容量卡内数据的数据库程序。
下列缩略语适用于本文件。
APDU: 应用协议数据单元(Application Protocol Data Units)
API:应用编程接口(Application Programming Interface)
ATR: 复位应答(Answer-to-Reset)
CLA: 类别字节(class byte)
COS: 卡操作系统(Card Operating System)
HCC: 大容量卡(high capacity cards)
ICC:集成电路卡(Integrated Circuit cards)
IC USB: 芯片间通用串行总线(inter-chip USB)
IFD:接口设备(interface device)
INS:指令字节(instruction byte)
Lc:用于编码编号 Nc 的长度字段
Le:用于编码编号 Ne 的长度字段
P1、P2:参数字节
RFU: 保留供将来使用(reserved for future use)
SQL: 结构化查询语言(Structure Query Language)
TLV: 标记-长度-值(Tag-Length-Value)
USB: 通用串行总线(Universal Serial Bus)
GB/T 30962—2014
相对于传统的IC 卡,大容量卡一般具有以下特征:
——存储容量较大,通常在1 M 字节以上;
——卡内数据通常由内部数据库引擎提供自主管理;
— 一般可支持高安全性的数据传输和存储;
通常可支持一种或多种传输接口,例如,7816 接口(见第7章)、USB/IC USB
接口(见第8
章)。
大容量卡逻辑结构如图1所示。
style="width:8.59375in;height:5.0875in" />
注:虚线框中为大容量卡数据库的逻辑结构。
图 1 大容量卡逻辑结构
大容量卡的逻辑结构主要包含以下4个部分:
a) 大容量卡硬件接口;
b) 大容量卡驱动程序;
c) 大容量卡的数据库应用;
d) 大容量卡的其他应用。
大容量卡驱动程序包括通讯驱动、存储驱动和其他驱动等,其他驱动一般包含算法加速器、定时
器等。
大容量卡的数据库应用和其他应用均受卡本身的安全机制的保护。此外,大容量卡的数据库应用
通常自身也有安全管理,这种安全管理方式一般采用基于角色的访问控制机制,可以对大容量卡内部资
源的访问进行权限的授予和权限的判定,只有具有相应权限的用户才能访问相应的资源,可以提高卡内
资源的安全性。
大容量卡的数据库应用和其他应用均通过命令请求响应的方式与通信接口进行交互。
GB/T 30962—2014
大容量卡7816传输接口的物理特性应符合 GB/T 16649.1—2006 的规定。
大容量卡7816传输接口的触点的尺寸和位置应符合 GB/T 16649.2—2006
的规定。
大容量卡7816传输接口的电信号和传输协议应符合 ISO/IEC7816-3:2006
的规定。
8 大容量卡 USB、IC USB 传输接口
支持 USB、IC USB 传输协议的大容量卡物理接口如图2所示。
|
||
---|---|---|
|
|
|
|
|
|
|
|
|
|
||
ISO/IEC
|
|
|
|
|
图 2 支持 USB、IC USB
传输协议的大容量卡物理接口
支持 USB、IC USB 传输协议的大容量卡的触点分配如表1所规定。
表 1 支持 USB、IC USB 接口的大容量卡的触点分配
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GB/T 30962—2014
表 1 (续)
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
未使用的触点区域应和其他触点区域电隔离。
在应用USB 或 IC USB 接口的情况下,这些触点的信号应不影响ISO/IEC
7816-3:2006 中定义的
触点信号。
8.2 USB、IC USB 接口电特性
支持 USB
接口的大容量卡的电源管理应符合通用串行总线规范2.0版中关于电源管理的规定。
支持 IC USB 接口的大容量卡的电流消耗应满足芯片间USB
规范1.0版中有关电源管理的规定。
支持 IC USB 接口的大容量卡应至少支持下述两种工作电压中的一种:
——B 类:3.0V;
——C 类:1.8V。
支持 IC USB
接口的大容量卡通过电压协商来完成对支持的电压级别的选择。电压级别的协商流
程由接口设备发起。
支持 B 类工作电压的大容量卡电特性见表2。
表 2 B 类电特性
单位为伏
|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
支持 C 类工作电压的大容量卡电特性见表3。
表 3 C 类电特性
单位为伏
|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GB/T 30962—2014
一个在大容量卡上符合本标准的数据库称为大容量卡数据库。大容量卡数据库的访问命令符合
GB/T 16649.4—2010 中定义的行业间命令的编码规则。
大容量卡数据库的构成如图3所示,其中数据库对象包括表、索引等。
style="width:7.70694in;height:2.44722in" />
图 3 大容量卡数据库构成
大容量卡应使用数据库平台统一管理大容量存储区的数据。
数据库平台应包括应用(命令)接口、数据管理功能、索引管理功能、模式管理功能和操作系统接
口等。
— 应用(命令)接口
· 向应用模块提供数据访问接口,接收应用模块发出的数据访问请求。
——数据管理功能
·
管理应用数据,统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行添
加、删除、更新或检索等应用数据操作。
——索引管理功能
·
管理索引数据,索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照
索引算法进行存储;
·
通过索引算法管理索引数据,并根据数据访问请求对索引数据进行生成、根据数据管理的
操作结果添加、删除或更新等操作,以及根据索引算法查找索引数据获得数据位置信息,
供数据管理使用。
模式管理功能
·
管理配置数据,配置数据包括应用模块下所有应用数据的集合、索引的配置信息以及该应
用模块自身的配置信息;
·
统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行模式操作,模式操作
包括生成配置信息、根据数据管理模块和索引管理模块的操作结果添加、删除或更新配置
信息,并根据数据访问请求获取应用数据集合和索引的配置信息,供数据管理模块和索引
管理模块使用。
——操作系统接口
·
为模式管理、数据管理、索引管理提供操作系统的文件访问接口、内存访问接口,使模式管
理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据。
GB/T 30962—2014
9.1.2 基于SQL
命令的大容量卡数据库的应用示例
本条给出了大容量卡数据库作为一个分布式 SQL
数据库环境的一部分的应用示例。
如图4所示,应用系统既能够使用SQL 命令与 SQL 数据库(即支持 SQL
命令的数据库)进行交 互,也能够使用SQL
命令与大容量卡数据库进行交互。应用系统通过 IFD/ICC 接口把 SQL 命令传送
到 ICC 的数据库中进行处理,这样,
一个带有数据库的大容量卡就能作为一个分布式 SQL 数据库环境
的一部分来部署和使用。
style="width:6.32014in;height:3.62986in" />
图 4 基于SQL 命令的大容量卡数据库的应用示例
大容量卡数据库包含称为表的对象,可以通过唯一的标识符来引用。
表是一个结构化数据对象,在数据库中有一个唯一的名称。表由一些已命名的列和排序的若干行
组成。在理论上讲,行的数目可以是无限的(即只受卡中存储空间的限制),也可以是有限的。图5给出
了表及其主要特征的示例。
style="width:6.16042in;height:4.12083in" />
图 5 表及其主要特征的示例
表的结构创建后就保持不变,既不能删除现有的列也不能插入新的列。在表上可以执行下列操作:
查询、插入、更新、删除。
系统表由大容量卡数据库平台管理,包含了管理和存取数据库所必需的信息。
style="width:7.40069in;height:2.57361in" />GB/T 30962—2014
为了提高大容量卡的通用性,扩展大容量卡的应用领域,建立一种处理大容量卡中数据库的操作体
系是必需的。处理大容量卡数据库的体系流程如下:
a)
访问端根据约定的数据通信协议,将数据库操作请求中每个参数的信息封装为对应的
APDU 操作命令;
b) 访问端向大容量卡下发 APDU
操作命令,大容量卡根据约定的数据通信协议解析 APDU 操
作命令,获取操作数据库的命令信息,并根据命令信息,处理对应的数据库,以及根据约定的数
据通信协议,将处理后的响应数据封装为 APDU 响应返回给访问端;
c) 访问端根据约定的数据通信协议,对接收到的APDU
响应进行解析,获得处理结果。
在执行大容量卡数据库操作命令中,SQL
声明(statement)被映射到大容量卡数据库操作上。
从 SQL 声明到大容量卡数据库操作的映射的原则如图6所示。
|
---|
图 6 从 SQL 声明到大容量卡数据库操作映射原则
如图6所示,数据库操作请求中每个参数的信息被封装为 APDU 操作命令。
首先,访问端会根据约定的数据通信协议,以及每个参数中每个元素的值,确定对应的
APDU 操作
命令中数据内容属性的信息。
其次,访问端会根据数据内容属性的信息的长度,确定对应的 APDU
操作命令中数据长度属性的
信息。
这种执行大容量卡数据库操作命令 APDU 的应用协议结构如图7所示。
首 标 主 体
|
|
---|
图 7 命令 APDU 结构
SQL 声明与大容量卡数据库操作的 APDU 命令之间的映射关系见表4。
GB/T 30962—2014
表 4 SQL 声明与APDU 命令之间的映射关系
|
|
|||
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
大容量卡根据约定的数据通信协议,将处理后的响应数据封装为 APDU
响应返回给访问端,具体
步骤如下:
a)
根据约定的数据通信协议,将响应数据中每个参数中每个元素的值组成一个数据包,计算数据
包的长度,根据数据包及其长度,确定 APDU 响应中数据内容属性的信息;
b)
确定一个数据包长度的阈值,将数据包长度与阈值进行比较,当长度大于阈值时,将数据包分
成至少两个数据子包,并根据每个数据子包,数据子包的长度,以及对应的多帧标识,确定对应
的 APDU 响应中数据内容属性的信息;
c) 将所有的数据包返回给访问端。
大容量卡数据库对操作的响应 APDU 结构如图8所示。
|
|
---|
图 8 响应 APDU 结构
响应 APDU 内容说明见表5。
表 5 响应 APDU 内容
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
一个执行数据库操作、执行事务操作或执行用户访问控制操作的命令可能需要1个或多个APDU
命令才能完成。如果接口设备下传到卡或者卡上传到接口设备的数据通过一个
APDU 命令的交互就
能完成,这种情况属于单帧交易的情况,否则属于多帧交易的情况。以下进行分别说明:
— 接口设备下传到卡的命令 APDU 数据字段结构如图9所示。
|
|
---|---|
|
|
图 9 接口设备下传到卡的命令 APDU 数据字段结构
style="width:3.68679in;height:0.5401in" />class="anchor">GB/T 30962—2014
图 9 中 :
· CLA: 见 ISO/IEC 7816-4 中的定义。
· INS: 为执行数据库操作、执行事务操作或执行访问控制操作。
· P1: 为操作类型。
· P2: 为帧标志字节 Flag,Flag(b0~b7, 其中b0 为最低位,b7
为最高位)的定义为:
a) b7:为1,后面的 Lc 和 Data 有效,需要解析; 为0,后面的 Lc 和 Data
无效,不需要解析;
b) b6~b2:RFU;
c) b1:为1,该帧为首帧,否则为非首帧;
d) b0:为1,该帧为尾帧,否则为非尾帧。
注1:对于接口设备传给卡只有1帧,而返回的响应存在多帧的情况,卡传给接口设备的首帧的
Flag应为0x82,卡
传给接口设备的中间帧的Flag应为0x80,卡传给接口设备的最后一帧的
Flag应为0x81。
注2:对于接口设备传给卡只有1帧,并且返回的响应也只有1帧的情况,Flag无意义。
注3:如果接口设备传给卡的命令需要多个APDU
命令(多帧)才能执行完毕的情况,则应连续将这些 APDU 传送 完成。
· Lc: 说明Data 字段中有效数据的长度,小于或等于255字节。
· Data:有效数据。
— 卡上传到接口设备的响应 APDU
数据字段结构,在无响应数据的情况下,如图10所示。
SW1、SW2
图 1 0 无响应数据情况下的 APDU 数据字段结构
· SW1、SW2: 状态码。
——卡上传到接口设备的响应 APDU
数据字段结构,在有响应数据的情况下,如图11所示。
|
|
|
|
---|
图 1 1 有响应数据情况下的 APDU 数据字段结构
图11中:
· Flag(b0~b7, 其中b0 为最低位,b7 为最高位)的定义为:
a) b7:为1,后面的 Len 和 Data 有效,需要解析;
为0,后面的 Len 和 Data 无效,不需要解析;
b) b6~b2:RFU;
c) b1:为1,该帧为首帧,否则为非首帧;
d) b0: 为1,该帧为尾帧,否则为非尾帧。
· Len:Data 字段中有效数据的长度,在多帧情况下(Flag
不等于0x83),首帧最前面2字节为多
帧中所有数据的总长度(这个总长度不包括这两个字节),其余帧2个字节数据总长度为0;在
单帧的情况下(Flag 等 于 0x83),2 字节帧数据总长度为单帧数据总长度。
· Data:有效数据。
· SW1、SW2: 状态码。
——接口设备下传到卡的命令 APDU 中的有效数据包(Data) 格式定义:
· 接口设备接口函数参数以 LV 形式传递到卡,有效数据包格式如图12所示。
GB/T 30962—2014
|
|
|
|
|
|
---|---|---|---|---|---|
|
|
|
|
|
|
图12 有效数据包格式(接口设备到卡)
· 当存在多维参数的情况下,参数的数据格式如图13所示。
|
|
|
|
|
|
---|---|---|---|---|---|
|
|
|
|
|
|
图13 多维参数情况下参数的数据格式(接口设备到卡)
注1: 当字符串以LV
形式传递到卡时,必须把字符串的结束符‘\0'也一起传递,长度包括字符串结束符‘\0’。
注2: 当任意参数的维数大于1的情况下,参数的数据长度不存在。
注 3 : 在多帧情况下(Flag 不等于0x83),
第1帧最前面2字节为多帧数据总长度,其余帧则没有这2个字节多帧数
据总长度。
注4: 在单帧的情况下(Flag 等 于 0x83), 不存在2字节帧数据总长度。
卡上传到接口设备的响应 APDU 中的有效数据包(Data)格式定义:
· 卡响应数据以LV
形式传递到接口设备,直接将响应数据传递给应用程序进行处理,有效数据
包格式如图14所示。
|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
图14 有效数据包格式(卡到接口设备)
· 当存在多维参数的情况下,参数的数据格式如图15所示。
|
|
|
|
|
|
---|---|---|---|---|---|
|
|
|
|
|
|
图15 多维参数情况下参数的数据格式(卡到接口设备)
单帧,多帧命令机制:
——对于命令-响应对, 一个命令APDU 应紧跟一个响应 APDU (见ISO/IEC
7816-3:2006)。 在接 口部分不允许出现命令-响应对的交叉,即收到响应 APDU
之后才可以初始化另外一对命令-
响应对。而在单帧、多帧机制中,每一发送帧都是一个命令 APDU,
每一应答帧都是一个响应 APDU,
因此向大容量卡中发送一帧数据,都应得到响应才能继续发送下一帧数据,直到所有
的帧数据发送完毕。
——帧命令机制是为了更好地适应大容量卡内部资源有限(尤其是内存资源)而设计的,它可以在
内存有限的情况下有效的运行,并适合大容量卡数据库中大数据量的传输和操作。
大容量卡数据库相关命令可以进行分组,如图16所示。
GB/T 30962—2014
style="width:8.76in;height:3.04656in" />大容量卡数据库相关命令
执行数据库操作 执行事务操作 执行用户访问控制操作
CREATEDB |
|
|
---|---|---|
OPEN DB |
|
|
CLOSE DB |
|
|
CREATETABLE |
|
|
CREATE INDEX |
|
|
GET RECORD)OPEN |
|
|
GET RECORDNEXT |
|
|
GET RECORT)CLOSE |
|
|
[NSERT RECORD |
|
|
UPDATE RECORD |
|
|
DELETE RECORD |
|
|
DEIETE DB |
|
图16 大容量卡数据库相关命令分组
大容量卡命令的命令编码和命令所对应的操作见表6。
表 6 命令编码和操作
|
|
---|---|
|
|
GB/T 30962—2014
表 6 (续)
|
|
||||||
---|---|---|---|---|---|---|---|
|
|
||||||
|
|
附录 A 给出了命令的用法和编码示例。
响应的状态字节 SW1、SW2
表示了卡内的处理状态。表7列出了在本标准中通用SW1-SW2 值的
含义。每个命令或执行操作中对应的栏目中有更详细的含义。
表 7 SW1、SW2 对应的卡内处理状态
|
|
|
---|---|---|
|
|
|
|
|
|
GB/T 30962—2014
表 7 (续)
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当数据库支持访问控制时,在创建数据库表、索引等文件时,同时创建数据安全属性文件,用于存储
访问控制等相关信息。
在后续的章条中,下面的符号被用来描述SQL 语句:
—— 表示可选的;
- \< … >表示属性字符串; ::=表示由哪些组成;
— 表示或;
— *表示所有的;
—— …表示省略。
对于参数编码,以下符号被使用:
———Ls:多帧数据总长度(用2字节编码);
——
[Ls]:多帧数据总长度(用2字节编码),该参数在有多帧数据时才存在,否则不存在;
——N: 参数的维数为 N;
——Lp: 参数长度(用1字节编码);
—— (Lp): 参数长度固定,不编码;
— \<>:参数是长度为 Lp 的数据。
GB/T 30962—2014
注:如果参数长度为 Lp 且不固定,则在命令APDU 中用1字节编码;如果 Lp
长度固定,则 Lp 在命令 APDU 中不
编码。
11.1.1 定义和范围
创建数据库。
11.1.2 使用条件和安全
有创建数据库权限的用户才能执行该操作。
数据库名称应小于或等于16个字节。
11.1.3 命令报文
数据库操作相关的 SQL 语句:
CREATE DB\<db name>
\<db name>::=\<数据库名称>
执行数据库操作相关的命令 APDU 见表8。
表 8 CREATE DB 的命令 APDU
|
|
---|---|
|
|
11.1.4 响应报文
CREATE DB的响应 APDU 见表9。
表 9 CREATE DB 的响应 APDU
|
|
---|---|
|
|
11.1.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
GB/T 30962—2014
· '82':安全状态不满足。
——SW1='6A',SW2=
· '80':Data 字段中的参数不正确;
· ‘84':对象已经存在。
SW1、SW2 的其他可能值见附录 B。
11.2.1 定义和范围
打开数据库。
11.2.2 使用条件和安全
同时只能有一个数据库被打开处于激活状态。
11.2.3 命令报文
数据库操作相关的 SQL 语句:
OPEN DB\<db name>
\<db name>::=\<数据库名称>
执行数据库操作相关的命令 APDU 见表10。
表10 0 PEN DB 的命令 APDU
|
|
---|---|
|
|
11.2.4 响应报文
OPEN DB的响应 APDU 见表11。
表11 0 PEN DB 的响应 APDU
|
|
---|---|
|
|
11.2.5 状态情况
可能会出现下列特定出错情况:
——SW1='6A',SW2=
· ‘80':Data 字段中的参数不正确。
GB/T 30962—2014
SW1、SW2 的其他可能值见附录 B。
11.3.1 定义和范围
关闭数据库。
11.3.2 使用条件和安全
无 。
11.3.3 命令报文
数据库操作相关的 SQL 语句:
CLOSE DB
执行数据库操作相关的命令 APDU 见表12。
表12 CLOSE DB 的命令 APDU
|
|
---|---|
|
|
11.3.4 响应报文
CLOSE DB的响应 APDU 见表13。
表13 CLOSE DB 的响应 APDU
|
|
---|---|
|
|
11.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
11.4.1 定义和范围
创建数据表。
11.4.2 使用条件和安全
使用条件和安全要求如下:
GB/T 30962—2014
a) 有创建表权限的用户才能执行该操作;
b) 数据表名称应小于或等于16个字节;
c) 每个数据字段的长度应小于或等于255字节;
d) 表的字段总数量应小于或等于56个。
11.4.3 命令报文
数据库操作相关的 SQL 语句:
CREATE TABLE\<table name>\<table element list
\<table name>::=\< 表 名 称 >
\<table element list >::=\< 列 定 义 >
执行数据库操作相关的命令 APDU 见表14。
表14 CREATE TABLE 的命令 APDU
|
|
---|---|
|
|
11.4.4 响应报文
CREATE
TABLE的响应 APDU 见表15。
表15 CREATE
TABLE 的响应 APDU
|
|
---|---|
|
|
11.4.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
· '82':安全状态不满足。
——SW1='6A',SW2=
GB/T 30962—2014
· ‘80':参数不正确;
· ‘84':内存不足;
· ‘89':对象已经存在。
SW1、SW2 的其他可能值见附录B。
11.5.1 定义和范围
创建索引。要求在数据库的初始化过程中,应先创建表和索引,再向表中添加记录。
11.5.2 使用条件和安全
使用条件和安全要求如下:
a)
如果要对数据表的某个字段建立索引,则应在该数据表建立之后,尚未添加任何记录之前建立
索引;否则可能导致索引紊乱;
b) 索引名称应小于或等于16字节;
c) 在同一个数据表中,不能建立同名的索引;
d) 建立索引的字段长度应小于或等于100字节。
11.5.3 命令报文
数据库操作相关的 SQL 语句:
CREATE INDEX\<table name>\<index name>\<index field name>
\<table name>::=\< 表 名 >
\<index name>::=\<索引名称>
\<index field name>::=\<索引域名称>
执行数据库操作相关的命令 APDU 见表16。
表 1 6 CREATE INDEX 的 命 令 APDU
|
|
---|---|
|
|
11.5.4 响应报文
CREATE INDEX 的响应 APDU 见表17。
GB/T 30962—2014
表17 CREATE INDEX 的响应 APDU
|
|
---|---|
|
|
11.5.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
11.6 GET RECORD OPEN
11.6.1 定义和范围
在指定的表中设定特定条件的搜索环境。
11.6.2 使用条件和安全
使用条件和安全要求如下:
a) 有查询表的权限的用户才能执行该操作;
b) 如果检索条件为空(NULL 表示检索条件为空),则查询表的全部记录;
c) 如果检索条件不为空,则按照输入的检索条件来进行查询;
d)
返回值不为空,做完查询后不再使用时,应调用11.8中的命令释放查询环境中分配的内存。
11.6.3 命令报文
数据库操作相关的 SQL 语句:
GET RECORD OPEN\<table name>\<search condition>\<search column
definitions
\<table object>::=\< 表 名 称 >
\<search condition>::=\<检索条件>
\<search column definitions>::=\<检索列定义>
执行数据库操作相关的命令 APDU 见表18。
表18 GET RECORD OPEN 的命令 APDU
|
|
---|---|
|
|
GB/T 30962—2014
表18 (续)
|
|
---|---|
|
|
11.6.4 响应报文
GET RECORD
OPEN 的响应 APDU 见表19。
表19 GET RECORD OPEN 的响应 APDU
|
|
---|---|
|
|
11.6.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
· '82':安全状态不满足。
——SW1='6A',SW2=
· '80':参数不正确;
· ‘84':内存不足;
· '89':对象已经存在。
SW1、SW2 的其他可能值见附录 B。
11.7 GET RECORD NEXT
11.7.1 定义和范围
获取满足指定检索条件的记录的指定属性字段。
11.7.2 使用条件和安全
有查询表的权限的用户才能执行该操作。
11.7.3 命令报文
数据库操作相关的 SQL 语句:
GET RECORD NEXT\<Context object>
\<Context object>::=\<查询上下文句柄>
注:该句柄由GET RECORD OPEN返回,固定4字节,字节次序见附录C。
执行数据库操作相关的命令 APDU 见表20。
GB/T 30962—2014
表20 GET RECORD NEXT的命令 APDU
|
|
---|---|
|
|
11.7.4 响应报文
GET RECORD
NEXT的响应 APDU 见表21。
表21 GET RECORD NEXT 的响应 APDU
|
|
---|---|
|
|
11.7.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
11.8 GET RECORD CLOSE
11.8.1 定义和范围
关闭句柄,释放相关内存。
11.8.2 使用条件和安全
无 。
11.8.3 命令报文
数据库操作相关的SQL 语句:
GET RECORD CLOSE\<Context object>
\<Context object>::=\<查询上下文句柄>
注:该句柄由 GET RECORD OPEN返回,固定4字节,字节次序见附录 C。
执行数据库操作相关的命令 APDU 见表22。
GB/T 30962—2014
表22 GET RECORD CLOSE 的命令 APDU
|
|
---|---|
|
|
11.8.4 响应报文
GET RECORD
CLOSE 的响应 APDU 见表23。
表23 GET RECORD CLOSE 的响应 APDU
|
|
---|---|
|
|
11.8.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
11.9.1 定义和范围
向指定数据库中的指定数据表中插入一条记录。
11.9.2 使用条件和安全
有在当前表中插入记录的权限的用户才能执行该操作。
11.9.3 命令报文
数据库操作相关的SQL 语句:
INSERT RECORD\<table name>\<VALUES
\<table name>::=\< 表 名 称 >
VALUES::= \< 记 录 值 >
执行数据库操作相关的命令 APDU 见表24。
表 2 4 INSERT RECORD 的 命 令 APDU
|
|
---|---|
|
|
GB/T 30962—2014
表24 (续)
|
|
---|---|
|
|
11.9.4 响应报文
INSERT RECORD的响应 APDU 见表25。
表25 INSERT RECORD 的响应 APDU
|
|
---|---|
|
|
11.9.5 状态情况
可能会出现下列特定出错情况:
———SW1='69',SW2=
· ‘82':安全状态不满足。
——SW1='6A',SW2=
· ‘80':参数不正确;
· ‘84':内存不足;
· ‘89':对象已经存在。
SW1、SW2 的其他可能值见附录 B。
11.10 UPDATE RECORD
11.10.1 定义和范围
修改符合特定条件的记录为指定值。
11.10.2 使用条件和安全
使用条件和安全要求如下:
a) 有在当前表中更新记录的权限的用户才能执行该操作;
b) 检索条件为空{NULL 表示检索条件为空},则修改表中所有列;
c) 检索条件不为空,则按指定的条件进行修改。
11.10.3 命令报文
数据库操作相关的 SQL 语句:
UPDATE RECORD\<table name>\<query
\<table name>::=\< 表 名 >
\<query condition>::=\<检索条件>
\<new value>::=\<更新记录值>
执行数据库操作相关的命令 APDU 见表26。
表26 UPDATE
GB/T 30962—2014
condition>\<new value>
RECORD 的命令 APDU
|
|
---|---|
|
|
11.10.4 响应报文
UPDATE RECORD 的响应 APDU 见表27。
表27 UPDATE RECORD 的响应 APDU
|
|
---|---|
|
|
11.10.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
· ‘82':安全状态不满足;
· '85':未执行前置命令或操作。
SW1='6A',SW2=
GB/T 30962—2014
· ‘80':参数不正确;
· ‘84':内存不足;
· ‘89':对象已经存在。
SW1、SW2 的其他可能值见附录B。
11.11 DELETE RECORD
11.11.1 定义和范围
删除符合特定条件的所有记录。
11.11.2 使用条件和安全
使用条件和安全要求如下:
a) 有在当前表中删除记录的权限的用户才能执行该操作;
b) 检索条件为空{NULL 表示检索条件为空),则删除所有记录;
c) 检索条件不为空,则按检索条件进行删除。
11.11.3 命令报文
数据库操作相关的 SQL 语句:
DELETE RECORD\<table name>\<query condition >
\<table name>::=\< 表 名 >
\<query condition>::=\<检索条件>
执行数据库操作相关的命令 APDU 见表28。
表28 DELETE RECORD 的命令 APDU
|
|
---|---|
|
|
11.11.4 响应报文
DELETE RECORD的响应 APDU 见表29。
GB/T 30962—2014
表29 DELETE RECORD 的响应 APDU
|
|
---|---|
|
|
11.11.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
· ‘82':安全状态不满足。
——SW1='6A',SW2=
· ‘80':参数不正确;
· ‘85':未执行前置命令或操作。
SW1、SW2 的其他可能值见附录 B。
11.12.1 定义和范围
删除数据库。
11.12.2 使用条件和安全
具有删除数据库权限的用户才能删除数据库。
11.12.3 命令报文
数据库操作相关的 SQL 语句:
DELETE DB\<db name>
\<db name>::=\< 数 据 库 名 >
执行数据库操作相关的命令 APDU 见表30。
表30 DELETE DB 的命令 APDU
|
|
---|---|
|
|
11.12.4 响应报文
DELETE DB 的响应 APDU 见表31。
GB/T 30962—2014
表31 DELETE DB 的响应 APDU
|
|
---|---|
|
|
11.12.5 状态情况
可能会出现下列特定出错情况:
——SW1='69',SW2=
· ‘82':安全状态不满足。
——SW1='6A',SW2=
· '80':参数不正确;
· ‘85':未执行前置命令或操作。
SW1、SW2 的其他可能值见附录 B。
大容量卡数据库事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保事务性单
元内的所有操作要么全部成功完成,要么恢复到事务的初始状态。
本标准的事务处理应保证事务的原子性、
一致性、隔离性和持久性。如果执行事务操作命令没有使
用或不支持,则数据库操作引起的修改总是立即提交生效。
由于受大容量卡内资源的限制(尤其是内存资源的限制),大容量卡既不支持多个物理接口的数据
库事务的并发操作,也不支持多个逻辑通道的数据库事务的并发操作,仅支持在基本信道(编号为0)进
行的单事务的处理机制。
12.2.1 BEGIN TRANSACTION
12.2.1.1 定义和范围
开启事务。
12.2.1.2 使用条件和安全
无 。
12.2.1.3 命令报文
数据库操作相关的SQL 语句:
BEGIN TRANSACTION
执行数据库操作相关的命令 APDU 见表32。
GB/T 30962—2014
表32 BEGIN TRANSACTION 的命令 APDU
|
|
---|---|
|
|
12.2.1.4 响应报文
BEGIN TRANSACTION 的响应 APDU
表33 BEGIN
见表33。
TRANSACTION 的命令 APDU
|
|
---|---|
|
|
12.2.1.5 状态情况
可能会出现下列特定出错情况:
———SW1='6A',SW2=
· ‘84':内存不足。
SW1、SW2 的其他可能值见附录B。
12.2.2 COMMIT
12.2.2.1 定义和范围
该事务操作COMMIT 使事务操作 BEGIN 执行以来的所有修改生效。
12.2.2.2 使用条件和安全
事务操作 BEGIN 应先执行。
12.2.2.3 命令报文
数据库操作相关的 SQL 语句:
COMMIT
执行数据库操作相关的命令 APDU 见表34。
GB/T 30962—2014
表34 COMMIT 的命令 APDU
|
|
---|---|
|
|
12.2.2.4 响应报文
COMMIT 的响应 APDU 见表35。
表35 COMMIT 的响应 APDU
|
|
---|---|
|
|
12.2.2.5 状态情况
可能会出现下列特定出错情况:
———SW1='69',SW2=
· '85':未执行前置命令或操作。
SW1、SW2 的其他可能值见附录B。
12.2.3 ROLLBACK
12.2.3.1 定义和范围
该事务操作ROLLBACK 是恢复事务操作BEGIN TRANSACTION 执行以前的状态。
12.2.3.2 使用条件和安全
事务操作BEGIN 应先执行。
12.2.3.3 命令报文
数据库操作相关的SQL 语句:
ROLLBACK
执行数据库操作相关的命令 APDU 见表36。
GB/T 30962—2014
表36 ROLLBACK 的命令APDU
|
|
---|---|
|
|
12.2.3.4 响应报文
ROLLBACK 的响应 APDU 见表37。
表37 ROLLBACK 的响应 APDU
|
|
---|---|
|
|
12.2.3.5 状态情况
可能会出现下列特定出错情况:
———SW1='69',SW2=
· ‘85':未执行前置命令或操作。
SW1、SW2 的其他可能值见附录B。
大容量卡数据库提供基于角色的访问控制(Role Base Access
Control,RBAC),RBAC 是在用户和
访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的
访问。
这种基于角色的访问控制由4个部分组成:
a) 用户请求接收功能,接收用户对智能卡资源的访问请求;
b) 角色获取功能,根据访问请求获取用户所对应的角色;
c)
访问权限获取功能,确定用户对应的角色是否具有对智能卡资源的访问权限;
d)
访问控制功能,当角色具有对所述智能卡资源的访问权限时,允许用户对所述智能卡资源进
行访问。
按照用户对大容量卡资源访问的要求,上述四部分的关系如图17所示。
GB/T 30962—2014
style="width:6.42708in;height:5.92014in" />
图17 访问控制权限的基本流程
角色是访问权限的集合,用户通过赋予不同的角色获得角色所拥有的访问权限。
一个用户只能拥 有一个角色, 一个角色可授权给多个用户;
一个角色可包含多个权限, 一个权限可被多个角色包含。用
户通过角色享有权限,它不直接与权限相关联,权限对存取对象的操作许可通过角色实现。
角色一般根据应用系统中完成特定任务的最小权限集进行划分和设定的。
角色的组织方式采用平坦模式,即每个角色都是相互独立的,角色管理(Role
Management)并不管
理角色之间的关系。
由专门的管理角色完成角色元组的插入、更新、删除。在进行实际的添加、修改、删除操作之前,相
应的程序模块需要通过安全核心检查执行该操作的管理角色的权限,仅有被授权的操作才能被相应的
程序模块最终执行。例如,在删除一个角色时,负责删除角色的函数要请求安全核心判断当前管理角色
的行为是否被授权。
一般的,下文中涉及的 roleid
为角色标识符,固定长度为2字节;Rolesafelevel为角色安全等级,固
定长度为1字节;Rolename 为角色名称,最长不超过16字节。
13.2.1 INSERT ROLE
13.2.1.1 定义和范围
插入新的角色信息。
13.2.1.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表插入记录的权限。
13.2.1.3 命令报文
数据库操作相关的SQL 语句:
INSERT ROLE\<roleid \<rolesafelevel \<rolename
\<roleid>::= \<角色标识符>
GB/T 30962—2014
注:角色标识符字节次序见附录C。
\<rolesafelevel>::= \<角色安全级别>
\<rolename>::= \< 角 色 名 称 >
执行数据库操作相关的命令 APDU 见表38。
表38 INSERT ROLE 的命令 APDU
|
|
---|---|
|
|
13.2.1.4 响应报文
INSERT ROLE 的响应 APDU 见表39。
表39 INSERT ROLE 的响应 APDU
|
|
---|---|
|
|
13.2.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.2.2 DELETE ROLE
13.2.2.1 定义和范围
从系统中删除与指定角色Id 相关的信息。
13.2.2.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表删除记录的权限。
13.2.2.3 命令报文
数据库操作相关的 SQL 语句:
DELETE ROLE \<roleid
\<roleid>::= \<角色标识符>
执行数据库操作相关的命令 APDU 见表40。
GB/T 30962—2014
表40 DELETE ROLE 的命令 APDU
|
|
---|---|
|
|
13.2.2.4 响应报文
DELETE ROLE 的响应 APDU 见表41。
表 4 1 DELETE ROLE 的 响 应 APDU
|
|
---|---|
|
|
13.2.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.2.3 UPDATE ROLE
13.2.3.1 定义和范围
根据角色标识符,将已有的角色信息更新成新的角色信息。
13.2.3.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表更新记录的权限。
13.2.3.3 命令报文
数据库操作相关的SQL 语句:
UPDATE ROLE\<roleid \<rolesafelevel>\<rolename
\<roleid>::= \<角色标识符>
\<rolesafelevel>::= \<角色安全级别>
\<rolename>::= \< 角 色 名 称 >
执行数据库操作相关的命令 APDU 见表42。
GB/T 30962—2014
表42 UPDATE ROLE 的命令 APDU
|
|
---|---|
|
|
13.2.3.4 响应报文
UPDATE ROLE的响应 APDU 见表43。
表43 UPDATE ROLE 的响应 APDU
|
|
---|---|
|
|
13.2.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
资源就是指数据库系统中需要保护的数据、程序模块及其他对象,通常指数据库,数据表等资源。
一般的,下文中涉及的 fatherObjectId
为父资源标识符,固定长度为2字节;ObjectId 为资源标识
符,固定长度为2字节;ObjectName 为资源名称,最长不超过16字节。
13.3.1 GET OBJECT ID BY NAME
13.3.1.1 定义和范围
通过资源名称和父资源标识符查找资源标识符。
13.3.1.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。
13.3.1.3 命令报文
数据库操作相关的SQL 语句:
GET OBJECT ID BY NAME\<fatherObjectId>\<ObjectName>
\<fatherObjectId>::= \<父资源标识符>
注:父资源标识符字节次序见附录C。
GB/T 30962—2014
\<ObjectName>::= \< 资 源 名 称 >
执行数据库操作相关的命令 APDU 见表44。
表44 GET OBJECT ID BY NAME 的命令 APDU
|
|
---|---|
|
|
13.3.1.4 响应报文
GET OBJECT ID BY NAME 的响应 APDU 见表45。
表45 GET OBJECT ID BY NAME 的响应 APDU
|
|
---|---|
|
|
13.3.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
13.3.2 GET OBJECT SAFE LEVEL BY ID
13.3.2.1 定义和范围
通过资源标识符查找资源安全级别。
13.3.2.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。
13.3.2.3 命令报文
数据库操作相关的SQL 语句:
GET OBJECT SAFE LEVEL BY ID\<ObjectId>
\<Objectld>::= \<资源标识符>
注:资源标识符字节次序见附录C。
执行数据库操作相关的命令 APDU 见表46。
GB/T 30962—2014
表46 GET OBJECT SAFE LEVEL BY ID
的命令 APDU
|
|
---|---|
|
|
13.3.2.4 响应报文
GET OBJECT SAFE LEVEL BY ID 的响应 APDU 见表47。
表47 GET OBJECT SAFE LEVEL BY ID
的响应 APDU
|
|
---|---|
|
|
13.3.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.3.3 GET OBJECT TYPE BY ID
13.3.3.1 定义和范围
根据资源标识符获取整个资源类型。
13.3.3.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。
13.3.3.3 命令报文
数据库操作相关的SQL 语句:
GET OBJECT TYPE BY ID\<ObjectId>
\<ObjectId>::= \<资源标识符>
执行数据库操作相关的命令 APDU 见表48。
GB/T 30962—2014
表48 GET OBJECT TYPE BY ID 的命令 APDU
|
|
---|---|
|
|
13.3.3.4 响应报文
GET OBJECT TYPE BY ID的响应 APDU 见表49。
表49 GET OBJECT TYPE BY ID 的响应 APDU
|
|
---|---|
|
|
13.3.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.3.4 GET OBJECT INFO BY NAME
13.3.4.1 定义和范围
通过资源名称和父资源标识符查找资源标识符。
13.3.4.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。
13.3.4.3 命令报文
数据库操作相关的SQL 语句:
GET OBJECT INFO BY NAME\<fatherObjectId>\<ObjectName
\<fatherObjectId>::= \<父资源标识符>
\<ObjectName>::= \<资源名称>
执行数据库操作相关的命令 APDU 见表50。
GB/T 30962—2014
表50 GET OBJECT INFO BY NAME 的命令
APDU
|
|
---|---|
|
|
13.3.4.4 响应报文
GET OBJECT INFO BY NAME的响应 APDU 见表51。
表 5 1 GET OBJECT INFO BY NAME
的响应 APDU
|
|
---|---|
|
|
13.3.4.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
用户信息采用平坦模式存储,即每个用户记录之间是相互独立的,相互之间不存在任何关系,并且
不支持用户组。用户管理模块同时兼管登录子系统的用户信息,将二者合二为一。
一般的,下文中涉及的
userid为用户标识符,固定长度为2字节;usersafelevel 为角色安全等级,固
定长度为1字节;username 为角色名称,最长不超过16字节。
13.4.1 INSERT USER
13.4.1.1 定义和范围
插入新的用户。
13.4.1.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有插入记录的权限。
GB/T 30962—2014
13.4.1.3 命令报文
数据库操作相关的 SQL 语句:
INSERT USER \<userid \<usersafelevel>\<username>
\<userid>::= \<用户标识符>
\<usersafelevel>::= \<用户安全等级>
\<username>::= \< 用 户 名 称 >
执行数据库操作相关的命令 APDU 见表52。
表52 INSERT USER 的命令APDU
|
|
---|---|
|
|
13.4.1.4 响应报文
INSERT USER 的响应 APDU 见表53。
表53 INSERT USER 的响应 APDU
|
|
---|---|
|
|
13.4.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.4.2 DELETE USER
13.4.2.1 定义和范围
从系统中删除与指定用户 Id 相关的信息。
13.4.2.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有删除记录的权限。
13.4.2.3 命令报文
数据库操作相关的SQL 语句:
DELETE
\<userid>::=
GB/T 30962—2014
USER\<userid>
\<用户标识符>
执行数据库操作相关的命令 APDU 见表54。
表54 DELETE USER 的命令 APDU
|
|
---|---|
|
|
13.4.2.4 响应报文
style="width:0.55334in;height:0.5533in" />
DELETE USER 的响应 APDU 见表55。
表55 DELETE USER 的响应 APDU
|
|
---|---|
|
|
13.4.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.4.3 UPDATE USER
13.4.3.1 定义和范围
根据用户Id,将已有的用户信息更新成新的用户信息。
13.4.3.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有更新记录的权限。
13.4.3.3 命令报文
数据库操作相关的SQL 语句:
UPDATE USER\<userid \<usersafelevel \<username
\<userid>::= \<用户标识符>
\<usersafelevel>::= \<用户安全等级>
\<username>::= \<用户名称>
执行数据库操作相关的命令 APDU 见表56。
GB/T 30962—2014
表56 UPDATE USER 的命令 APDU
|
|
---|---|
|
|
13.4.3.4 响应报文
UPDATE USER 的响应 APDU 见表57。
表57 UPDATE USER 的响应 APDU
|
|
---|---|
|
|
13.4.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
为角色授权(PA)
建立角色、资源及操作之间的关系,指定什么样的角色能够以什么样的操作(访问
动作)访问什么样的资源。只有管理角色才有可能被授权完成这样的工作。
一般的,下文中涉及的 operateid
为操作标识符,固定长度为2字节;fieldname为字段名称,最长不
超过16 字节。
13.5.1 PA GRANT
13.5.1.1 定义和范围
对指定角色 Id 授予对指定资源 Id 进行指定操作 Id 的权限。
13.5.1.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有插入记录的权限。
当指定资源为数据表时,若字段名为空,则是对数据表自身进行操作;若字段名不为空,则是对该数
据表中指定字段进行读授权。
13.5.1.3 命令报文
数据库操作相关的SQL 语句:
GB/T 30962—2014
PA GRANT\<roleid>\<objectid>\<operateid>\<fieldname>
\<roleid>::= \<角色标识符>
\<objectid>::= \<资源标识符>
\<operateid>::= \<操作标识符>
\<fieldname>::= \< 字 段 名 称 >
执行数据库操作相关的命令 APDU 见表58。
表58 PA GRANT的命令 APDU
|
|
---|---|
|
|
13.5.1.4 响应报文
PA GRANT 的响应 APDU 见表59。
表59 PA GRANT的响应 APDU
|
|
---|---|
|
|
13.5.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.5.2 PA REVOKE
13.5.2.1 定义和范围
对指定角色 Id 回收对指定资源 Id 进行指定操作 Id 的权限。
13.5.2.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有更新记录的权限。
当指定资源为数据表时,若字段名为空,则是对数据表自身进行操作;若字段名不为空,则是对该数
据表中指定字段进行回收读权限。
13.5.2.3 命令报文
数据库操作相关的SQL 语句:
GB/T 30962—2014
PA REVOKE\<roleid>\<objectid>\<operateid>\<fieldname>
\<roleid>::= \<角色标识符>
\<objectid>::= \<资源标识符>
\<operateid>::= \<操作标识符>
\<fieldname>::= \<字段名称>
执行数据库操作相关的命令 APDU 见表60。
表60 PA REVOKE 的命令 APDU
|
|
---|---|
|
|
13.5.2.4 响应报文
PA REVOKE的响应 APDU 见表61。
表61 PA REVOKE 的响应 APDU
|
|
---|---|
|
|
13.5.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
13.5.3 PA REVOKEALL
13.5.3.1 定义和范围
回收指定角色的所有权限。
13.5.3.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有删除记录的权限。
13.5.3.3 命令报文
数据库操作相关的 SQL 语句:
PA REVOKEALL\<roleid
GB/T 30962—2014
\<roleid>::= \<角色标识符>
执行数据库操作相关的命令 APDU 见表62。
表62 PA REVOKEALL 的命令 APDU
|
|
---|---|
|
|
13.5.3.4 响应报文
PA REVOKEALL的响应 APDU 见表63。
表63 PA REVOKEALL 的响应 APDU
|
|
---|---|
|
|
13.5.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
为用户授权(UA)
建立角色和用户之间的关系。只有管理角色才有可能被授权完成这样的工作。
13.6.1 UA ASSIGN
13.6.1.1 定义和范围
为指定的用户 Id 分配指定的角色 Id。
13.6.1.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有插入记录的权限。
仅支持一个用户仅可以分配一个角色。
13.6.1.3 命令报文
数据库操作相关的SQL 语句:
UA ASSIGN\<userid>\<roleid
\<userid>::= \<用户标识符>
\<roleid>::= \<角色标识符>
执行数据库操作相关的命令 APDU 见表64。
GB/T 30962—2014
表64 UA ASSIGN 的命令 APDU
|
|
---|---|
|
|
13.6.1.4 响应报文
UA ASSIGN 的响应 APDU 见表65。
表65 UA ASSIGN 的响应 APDU
|
|
---|---|
|
|
13.6.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.6.2 UA REVOKE
13.6.2.1 定义和范围
回收指定用户的指定角色。
13.6.2.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有删除记录的权限。
13.6.2.3 命令报文
数据库操作相关的SQL 语句:
UA REVOKE\<userid>\<roleid>
\<userid>::= \<用户标识符>
\<roleid>::= \<角色标识符>
执行数据库操作相关的命令 APDU 见表66。
GB/T 30962—2014
表66 UA REVOKE 的命令 APDU
|
|
---|---|
|
|
13.6.2.4 响应报文
UA REVOKE 的响应 APDU 见表67。
表67 UA REVOKE 的响应 APDU
|
|
---|---|
|
|
13.6.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.6.3 UA GET ROLEID BY USERID
13.6.3.1 定义和范围
根据用户 Id 获取其对应的角色 Id。
13.6.3.2 使用条件和安全
当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有查询记录的权限。
13.6.3.3 命令报文
数据库操作相关的SQL 语句:
UA GET ROLEID BY USERID\<userid>\<roleid>
\<userid>::= \<用户标识符>
\<roleid>::= \<角色标识符>
执行数据库操作相关的命令 APDU 见表68。
表68 UA GET ROLEID BY USERID 的命令
APDU
|
|
---|---|
|
|
GB/T 30962—2014
表68 (续)
|
|
---|---|
|
|
13.6.3.4 响应报文
UA GET ROLEID BY USERID的响应 APDU 见表69。
表69 UA GET ROLEID BY USERID 的响应
APDU
|
|
---|---|
|
|
13.6.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
会话管理,即用户登录到系统到退出系统的整个过程的管理。为简化系统的设计与实现,在任一时
刻仅支持一个登录用户。
13.7.1 LOGIN
13.7.1.1 定义和范围
用户登录。
13.7.1.2 使用条件和安全
无 。
13.7.1.3 命令报文
数据库操作相关的SQL 语句:
LOGIN \<userid>\<roleid \<dbname
\<userid>::= \<用户标识符>
\<roleid>::= \<角色标识符>
\<dbname>::= \< 数 据 库 名 >
执行数据库操作相关的命令 APDU 见表70。
GB/T 30962—2014
表70 LOGIN 的命令 APDU
|
|
---|---|
|
|
13.7.1.4 响应报文
LOGIN 的响应 APDU 见表71。
表71 LOGIN 的响应 APDU
|
|
---|---|
|
|
13.7.1.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.7.2 LOGOUT
13.7.2.1 定义和范围
用户注销。
13.7.2.2 使用条件和安全
无 。
13.7.2.3 命令报文
数据库操作相关的 SQL 语句:
LOGOUT
执行数据库操作相关的命令 APDU 见表72。
表72 LOGOUT 的命令 APDU
|
|
---|---|
|
|
GB/T 30962—2014
表72 (续)
|
|
|
---|---|---|
|
|
![]() |
13.7.2.4 响应报文
LOGOUT 的命令 APDU 见表73。
表73 LOGOUT 的命令 APDU
|
|
---|---|
|
|
13.7.2.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。
13.7.3 LOGINED
13.7.3.1 定义和范围
判断指定用户 ID 是否已经登录。
13.7.3.2 使用条件和安全
无 。
13.7.3.3 命令报文
数据库操作相关的SQL 语句:
LOGINED
执行数据库操作相关的命令 APDU 见表74。
表74 LOGINED 的命令 APDU
|
|
---|---|
|
|
GB/T 30962—2014
13.7.3.4 响应报文
LOGINED 的响应 APDU 见表75。
表75 LOGINED 的响应 APDU
|
|
---|---|
|
|
13.7.3.5 状态情况
可能会出现特定出错情况,SW1、SW2 的可能值见附录B。
为了避免与普通 IC
的兼容问题,在接口设备启动过程中需要加入一个大容量卡识别机制,要求通
过接口设备读取卡中特定的文件/数据。接口设备通过7816的I/O
接口读取专用文件EFveM 的方式检
测卡类型。
EFMEM:包含了判断 IC 中存储卡类型和使用协议的信息,位置在主文件(MF)
目录下,如图18
所示。
|
|
|
|||
---|---|---|---|---|---|
|
|
||||
|
|
||||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
注1: 字节1:bit1
(最低有效位)表示是否有闪存,0:没有闪存,1:有闪存,其余位保留供将来使用。
注2: 字节2~4:高速接口类型,通过ASCⅡI 码表示。例如,"IC USB"
使用编码"7367555342"表示,"USB" 使用编
_
码"2020555342"表示。
注3:
字节5~7:高速接口所使用的协议版本号,通过3个字节16进制数表示。例如,版本1.1应编码成"0001
01",版本2.0应编码成“000200”,版本4.1.1应编码成“040101”,版本10.16.1应编码成"0A
1001"。
图18 EFwEM 示例
GB/T 30962—2014
(资料性附录)
大容量卡操作用法示例
本附录提供了大容量卡数据库操作和用户访问控制操作用法和编码实例,组的维数用1字节编码。
操作数据库命令的示例如下所示:
a) CREATE DB DBONE
|
|
|
|
---|---|---|---|
|
|
|
|
b) CREATE TABLE TABONE COL1 COL2
|
|
|
|
|
|
|
|
|
---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
c) INSERT ROLE 21 ROLE1
|
|
|
|
|
|
---|---|---|---|---|---|
|
|
|
|
|
|
d) INSERT RECORD命令,插入一条长度为700字节的记录,从主机发送到卡端的
APDU 命令 序列如下所示:
APDU
命令一帧只能传送255字节数据,因此700字节的记录要分为首帧、中间帧、尾帧,3帧
依次连续发送到大容量卡端。
首帧:
|
|
|
|
|
|
|||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
中间帧:
|
|
|
|
|
|
|||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
尾帧:
|
|
|
|
|
|
|||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注:CH: 命令头(CLA INS P1 P2);Col:列名。
GB/T 30962—2014
(规范性附录)
大容量卡数据库可能产生的错误码
大容量卡数据库可能产生的错误码见表 B.1 所列。
style="width:0.52659in;height:0.53328in" />表 B.1
大容量卡数据库可能产生的错误码
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GB/T 30962—2014
表 B.1 ( 续 )
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GB/T 30962—2014
(资料性附录)
网络字节次序和主机字节次序
网络字节次序:在传输数据时,总是数值最高位的字节最先发送。
主机字节次序:跟芯片有关,如 Intel为低位在前,高位在后。
一般来讲,为了程序的通用性,在发出数据时转为网络字节,在接收后转为主机字节来处理。
更多内容 可以 GB-T 30962-2014 识别卡 集成电路卡 大容量卡. 进一步学习